package com.jiyun.controller;

import com.jiyun.common.pojo.Mendianpingjia;
import com.jiyun.common.pojo.Mendiansp;
import com.jiyun.common.pojo.Mendianweizhi;
import com.jiyun.service.MendianPingjiaService;
import com.jiyun.service.MendianSpService;
import com.jiyun.service.MendianWeizhiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collections;
import java.util.List;

@RestController
@RequestMapping("/mendian")
@Slf4j
public class MendianWeizhiController {
    // 自动注入门店位置服务
    @Autowired
    MendianWeizhiService mendianWeizhiService;
    // 自动注入门店商品服务
    @Autowired
    MendianSpService mendianSpService;
    // 自动注入门店评价服务
    @Autowired
    MendianPingjiaService mendianPingjiaService;

    // 映射到页面请求，用于获取所有门店位置信息
    @RequestMapping("findmendianWeizhiAll")
    public List<Mendianweizhi> mendianweizhi() {
        // 调用服务获取门店位置列表并返回
        return mendianWeizhiService.mendianweizhi();
    }

    // 映射到页面请求，根据特定条件展示门店商品信息（条件value1为1时）
    @RequestMapping("mendianzhanshi")
    public List<Mendiansp> mendianzhanshi(Integer value1) {
        // 如果value1等于1，则调用服务获取门店展示商品列表并返回
        if (value1 == 1) {
            List<Mendiansp> mendiansp = mendianSpService.mendianzhanshi();
            return mendiansp;
        } else {
            // 如果条件不满足，返回null
            return null;
        }
    }

    // 映射到页面请求，根据特定条件展示门店商品信息（条件value2为2时）
    @RequestMapping("mendianzhanshi2")
    public List<Mendiansp> mendianzhanshi2(Integer value2) {
        // 先对传入的参数进行校验，避免空指针异常
        if (value2 == null) {
            // 记录参数为空的日志（此处简单打印示例，实际建议用日志框架详细记录）
            System.err.println("传入的参数value2为空");
            return Collections.emptyList();
        }
        if (value2 == 2) {
            try {
                List<Mendiansp> mendianSpList = mendianSpService.mendianzhanshi2();
                // 验证获取到的列表是否为空，为空则返回空列表，增强接口的健壮性
                if (mendianSpList == null) {
                    System.err.println("获取的门店展示商品列表为空");
                    return Collections.emptyList();
                }
                return mendianSpList;
            } catch (Exception e) {
                // 详细记录异常信息（实际应用中使用日志框架更好）
                System.err.println("调用服务获取门店展示商品列表时出现异常: " + e.getMessage());
                // 返回空列表兜底，防止调用端出现空指针问题
                return Collections.emptyList();
            }
        }
        // 条件不满足时返回空列表，保证接口返回的规范性
        return Collections.emptyList();
    }

    // 映射到页面请求，根据特定条件展示门店商品信息（条件value3为3时）
    @RequestMapping("mendianzhanshi3")
    public List<Mendiansp> mendianzhanshi3(Integer value3) {
        if (value3 != null && value3 == 3) {
            try {
                List<Mendiansp> mendianSpList = mendianSpService.mendianzhanshi3();
                // 增加对获取到的列表的验证，若为空则返回空列表，避免返回null
                if (mendianSpList == null) {
                    System.err.println("获取的门店展示商品列表为空");
                    return Collections.emptyList();
                }
                return mendianSpList;
            } catch (Exception e) {
                // 使用日志框架记录详细异常更好，此处简单打印示例
                System.err.println("调用服务获取门店展示商品列表时出现异常: " + e.getMessage());
                // 返回空列表作为异常时的兜底数据，防止调用方出现空指针异常
                return Collections.emptyList();
            }
        }
        // 当条件不满足时，同样返回空列表，保持接口返回数据的一致性和规范性
        return Collections.emptyList();
    }

    private List<Mendianpingjia> getMendianPingjiaList() {
        try {
            List<Mendianpingjia> pingjiaList = mendianPingjiaService.pingfen();
            if (pingjiaList == null) {
                System.err.println("获取的门店评价列表为空");
                return Collections.emptyList();
            }
            return pingjiaList;
        } catch (Exception e) {
            System.err.println("执行获取门店评价信息操作时出现异常: " + e.getMessage());
            return Collections.emptyList();
        }
    }

    // 映射到页面请求，用于获取门店评价信息
    @RequestMapping("pingfen")
    public List<Mendianpingjia> pingfen() {
        return getMendianPingjiaList();
    }

    private List<Mendiansp> getQianggouInfoBySpId(Integer id) {
        try {
            List<Mendiansp> qianggouList = mendianSpService.qianggouxinxi(id);
            if (qianggouList == null) {
                System.err.println("根据商品ID获取的强购信息列表为空");
                return Collections.emptyList();
            }
            return qianggouList;
        } catch (Exception e) {
            System.err.println("执行获取强购信息操作时出现异常: " + e.getMessage());
            return Collections.emptyList();
        }
    }

    // 映射到页面请求，根据商品ID获取强购信息
    @RequestMapping("qianggouxinxi")
    public List<Mendiansp> qianggouxinxi(Integer id) {
        if (id == null) {
            System.err.println("传入的商品ID参数为null，无法获取强购信息");
            return Collections.emptyList();
        }
        return getQianggouInfoBySpId(id);
    }
}
